# Esta clase maneja las comunicaciones que son cargadas por los Account Managers. Llevando un registro de las mismas, se puede medir la perfomance de venta por usuario o por equipo.
# Pueden ser: Movimientos, Reuniones, Ventas, Posicionamientos, e Ingresos.
class ComunicacionesController < ApplicationController

  before_filter :ensure_login  
  
  # Recupera todas las comunicaciones para ser mostradas en pantalla.
  def index
  	@comunicaciones = Comunicacion.find(:all)
    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @comunicaciones }
    end
  end
  
  # Busca las comunicación segun su tipo.
  def for_cuenta	
		@colspan = 3
	 	@movimiento = Movimiento.new
		@reunion = Reunion.new
		@venta = Venta.new
		@cuenta = Cuenta.find(params[:cuenta_id])
		@titulo = 'Comunicaciones de ' +@cuenta.razon_social	
		contacto_id = params[:contacto_id]
		if contacto_id.to_i != 0 then
			@contacto = Contacto.find_by_id(contacto_id.to_i)
			@movimientos = Movimiento.search_con(params[:mov_page],params[:contacto_id])
			@reuniones = Reunion.search_con(params[:reu_page],params[:contacto_id])
			@ventas = Venta.search_con(params[:ven_page],params[:contacto_id])
			@titulo = @titulo + ' - ' + @contacto.nombre
		else
			@movimientos = Movimiento.search(params[:mov_page],params[:cuenta_id])
			@reuniones = Reunion.search(params[:reu_page],params[:cuenta_id])
			@ventas = Venta.search(params[:ven_page],params[:cuenta_id])
		
		end	  
		
  	respond_to do |format| 
			format.js   {render :partial => 'comunicaciones/all' }
  		format.html	{ render :action => "index"}
      format.xml  { render :xml => @comunicacion }
  	end
  end
  
  # Recupera la comunicación que va a ser mostrada en pantalla.
  def show
    @movimientos = Movimiento.find_by_cuenta_id(params[:id])
    @reuniones = Reunion.find_by_cuenta_id(params[:id])
    @ventas = Venta.find_by_cuenta_id(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @comunicacion }
    end
  end

# Prepara la nueva comunicación para su posterior creación efectiva.
  def new
  	
  	@user = User.find(params[:user_id])
  	@cuenta = Cuenta.find(params[:user_id])
  	if ! get_mod_cuenta(@cuenta)
  		redirect_to('/cuentas')
   	else	  	  	
    	@comunicacion = Comunicacion.new
			respond_to do |format|
      	format.html # new.html.erb
      	format.xml  { render :xml => @comunicacion }
    	end
    end
  end

   # Recupera la comunicación que va a ser editada.
  def edit
    @comunicacion = Comunicacion.find(params[:id])
    if ! get_mod_cuenta(@comunicacion.cuenta)
  		redirect_to('/cuentas')
   	else
    	@cuenta = @comunicacion.cuenta_id
  	end
  end
  
  
# Crear la comunicación.
  def create

  end

  # Actualizar las comunicaciones.
  def update
    @comunicacion = Comunicacion.find(params[:id])
  	@cuenta = Cuenta.find(@comunicacion.cuenta_id)
    respond_to do |format|
      if @comunicacion.update_attributes(params[:comunicacion])
        format.js
        format.html { redirect_to(cuenta_comunicaciones_path (@cuenta)) }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @comunicacion.errors, :status => :unprocessable_entity }
      end
    end
  end

  # Borrar la comunicación.
	def delete
	end

  # Borrar efectivamente la comunicación.
  def destroy

    @comunicacion = Comunicacion.find(params[:id])    
    if ! get_mod_cuenta(@comunicacion.cuenta)
  		redirect_to('/cuentas')
   	else    
   		@cuenta = Cuenta.find(@comunicacion.cuenta_id)
   	  @comunicacion.destroy
    	respond_to do |format|
    		format.js
      	format.html { redirect_to(cuenta_comunicaciones_path (@cuenta)) }
     	 	format.xml  { head :ok }
    	end
    end	
  end
end
